home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 February / Macworld (1999-02).dmg / Cinema 4D GO demo / Gumption Plug-ins / Plug-ins / Freeware / DPI / DPI.COF
Text File  |  1998-03-19  |  1KB  |  57 lines

  1. // DPI
  2. // calculate pixel resolution from DPI and paper size 
  3. // (c) Christian Losch
  4. // 1998 Maxon Computer GmbH
  5.  
  6. struct Mem
  7. {
  8.     var p_x,p_y;
  9.     var dpi;
  10. };
  11.  
  12. var mem;
  13.  
  14. Function(doc)
  15. {
  16.     var resx,resy;
  17.     var dlg = new (SimpleDialog);
  18.  
  19.     dlg->SetTitle("DPI Conversion");
  20.  
  21.     dlg->SetData(0,"Paper X (in)" ,FIELD_FLOAT  ,0.0,1E6,mem->p_x);
  22.     dlg->SetData(1,"Paper Y (in)" ,FIELD_FLOAT  ,0.0,1E6,mem->p_y);
  23.     dlg->SetData(2,"DPI"          ,FIELD_INTEGER,1,10000,mem->dpi);
  24.  
  25.     if (!dlg->DoDialog()) return;
  26.  
  27.     mem->p_x = dlg->GetData(0);
  28.     mem->p_y = dlg->GetData(1);
  29.     mem->dpi = dlg->GetData(2);
  30.  
  31.     resx = mem->p_x*mem->dpi;
  32.     resy = mem->p_y*mem->dpi;
  33.  
  34.     if (resx>16384) resx = 16384.0;
  35.     if (resy>16384) resy = 16384.0;
  36.  
  37.     if (resx*resy>800*600*10)
  38.     {
  39.         var text=new(string,255);
  40.  
  41.         text = stradd("Warning ",tostring(resx,".0f"),"x",tostring(resy,".0f")," is|",tostring(resx*resy/480000,".1f")," times slower|than 800x600|Do you want to continue?");
  42.  
  43.         if (TextDialog(text,DLG_OKCANCEL+DLG_ICONQUESTION)!=DLG_R_OK) return;
  44.     }
  45.     doc->SetRenderOutput(resx,resy,1.333333,1.0,0,0,25);
  46. }
  47.  
  48. main()
  49. {
  50.     mem = new(Mem);
  51.  
  52.     mem->p_x = 11;
  53.     mem->p_y = 8.5;
  54.     mem->dpi = 72;
  55.  
  56.     RegisterMenuHook("DPI Conversion","Function");
  57. }